# _*_ encoding:utf-8 _*_

from goods.models import GoodsChannel


def get_categories():
    """获取渲染主页的商品频道分类模板参数"""

    # 初始化一个空字典，用于保存模板参数
    categories = {}

    # （1） 读取所有的频道信息 — 根据分组id升序/sequence升序
    # 第一组： 手机1， 相机2， 数码3
    # 第二组： 电脑1， 办公2， 家用电器3
    channels = GoodsChannel.objects.order_by('group_id', 'sequence')

    # （2） 遍历出每一个频道
    for channel in channels:
        # 每当地区一个分组的第一个频道的时候，创建以分组id为key的键值对
        if channel.group_id not in categories:
            categories[channel.group_id] = {
                'channels': [],  # 频道
                'sub_cats': [],  # 二级分类
            }

        # （3） 插入当前频道信息
        categories[channel.group_id]['channels'].append({
            'id': channel.id,
            'name': channel.category.name,  # 当前频道关联的一级分类名称
            'url': channel.url
        })

        cat1 = channel.category  # 当前频道的分类对象 —> 一级分类对象
        cat2s = cat1.subs.all()  # 所有关联的二级对象查询集
        # （4） 插入二级分类信息
        for cat2 in cat2s:

            # （5） 插入三级分类信息
            cat3s = cat2.subs.all()
            cat3_list = []
            for cat3 in cat3s:
                cat3_list.append({
                    'id': cat3.id,
                    'name': cat3.name
                })

            categories[channel.group_id]['sub_cats'].append({
                'id': cat2.id,
                'name': cat2.name,
                'sub_cats': cat3_list  # 三级分类
            })

    return categories







